//https://www.nowcoder.com/practice/f51c317e745649c0900996fd3f683aed?tpId=290&tqId=39934&ru=/exam/oj

int main()
{
	string s;
	cin >> s;
	string ret;
	int n = s.size();
	for (int i = 0; i < n; i++)
	{
		ret += s[i];
		if ((n - i - 1) % 3 == 0 && i != n - 1) ret += ',';
	}
	cout << ret << endl;
	return 0;
}

//https://www.nowcoder.com/practice/bfb2a2b3cdbd4bd6bba0d4dca69aa3f0?tpId=230&tqId=39749&ru=/exam/oj
#include <iostream>
using namespace std;

int jump(int n) {
    if (n <= 1) {
        return 1;
    }
    int dp[n + 1];
    dp[0] = 1; dp[1] = 1;
    for (int i = 2; i <= n; i++) {
        dp[i] = dp[i - 1] + dp[i - 2];
    }
    return dp[n];
}

int main() {
    int a;
    cin >> a;
    cout << jump(a) << endl;
}


//https://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4?tpId=13&tqId=11198&ru=/exam/oj
bool IsContinuous(vector<int>& numbers) {
    sort(numbers.begin(), numbers.end());
    int count = 0;
    int need = 0;
    for (int i = 0; i < 4; i++) {
        if (numbers[i] == 0) {
            count++;
            continue;
        }
        if (numbers[i] == numbers[i + 1]) {
            return false;
        }
        need += numbers[i + 1] - numbers[i] - 1;
    }
    if (need <= count) return true;
    return false;
}